1. Technical Field
The present invention relates in general to improvements in operating systems and data processing systems, and in particular to enhancements in operating system and data processing system efficiency in utilization of system resources. Still more particularly, the present invention relates to a method and system for enhancing the efficiency of the allocation of system resources in a data processing system by permitting an operating system to utilize multiple selectable schedulers.
2. Description of the Related Art
Modern data processing systems typically permit a multitude of programs or applications, each having multiple processes and/or threads, to be present within memory at the same time, permitting the central processing unit to be shared by those programs. This technique improves the efficiency of the computer system by permitting more "throughput" in that more tasks may be accomplished in less time. Such techniques result in highly efficient utilization of a central processing unit.
The objective of such systems is to have a task running at all times, in order to maximize utilization of the central processing unit. Therefore, if there is more than one task desired at a particular time, one task is processed while the remainder wait until the processor is free and can be rescheduled. It should therefore be apparent that means must be provided for deciding which pending task will next receive the service of the central processor. This is typically a function of the scheduling and dispatching portions of an operating system.
Many scheduling methods are known in the prior art. Typical examples include the provision of a plurality of queues of different priorities, tasks which are assigned based upon user determined priorities which determine the initial queue assignment. Other examples include straightforward First-Come First-Served, or Shortest-Job-First schedulers.
Schedulers are typically included within operating system kernels and often combined with the dispatcher. This situation makes modification of a scheduler for different environments difficult and further prevents scheduler modifications by anyone who does not have rights to access the kernel source code.
This becomes a problem due to the fact that operating system kernels may need to run in many different environments. The same operating system kernel may also run on many different hardware platforms and in multiple operating environments. It is also possible for an operating system to be utilized as a base to run software written for another operating system.
The different environments in which an operating system kernel may run can result in a situation in which different schedulers would be necessary for each environment and useful in order to optimize system resource allocation. For example, an interactive environment may require a time sharing scheduler which fairly allocates central processing unit time between processes, threads, or users. A manufacturing environment may require a real time scheduler, which gives central processing unit time to a process immediately, upon the occurrence of some event.
It should therefore be apparent that operating system and data processing system efficiency, portability, and utility may be greatly enhanced by providing an operating system kernel which may utilize multiple diverse schedulers in order to optimize allocation of system resources and allow correct operation of different types of applications on data processing systems which include that operating system kernel.